/**
 * 权限控制中间件
 */

const express = require("express");
const util = require("../common/util");

/**
 * 是否登录
 * @param {Express.Request} req 请求
 * @param {Express.Response} res 响应
 * @param {Express.NextFunction} next 下一个 
 */
function isLogin(req, res, next) {
    if (!req.session.isLogin) {
        res.json(util.FormatJSONData(401, "无访问授权"));
    } else {
        next();
    }
}

/**
 * 角色是否为管理员
 * @param {Express.Request} req 请求
 * @param {Express.Response} res 响应
 * @param {Express.NextFunction} next 下一个 
 */
function isAdmin(req, res, next) {
    if (req.session.user.role !== 1) {
        res.json(util.FormatJSONData(403, "无访问权限"));
    } else {
        next();
    }
}

/**
 * 角色是否为管理员或用户自身
 * @param {Express.Request} req 请求
 * @param {Express.Response} res 响应
 * @param {Express.NextFunction} next 下一个 
 */
function isSelfOfAdmin(req, res, next) {
    let id = Number.parseInt(req.params.id);
    if (req.session.user.id === id || req.session.user.role === 1) {
        next();
    } else {
        res.json(util.FormatJSONData(403, "无访问权限"));
    }
}

module.exports = {
    isLogin,
    isAdmin,
    isSelfOfAdmin,
}